SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE Procedure [dbo].[SP_TMDOCU_PROV_Q51]                                
/*-------------------------------------------------------*/                                
/*---Empresa              : OFISIS S.A.                --*/                                
/*---Cliente              : OFISIS                     --*/                                
/*---Sistema              : Tesoreria                  --*/                                
/*---M©dulo               : Empresa                    --*/                                
/*---Programa             : Registro COMPRAS           --*/                                
/*---Script               : tmdocu.sql                 --*/                                
/*---Nombre SP            : SP_TMDOCU_PROV_Q51         --*/                                
/*---Desarrollado por     : Carlos Marquez Escobar     --*/                                
/*---Fecha Creaci©n       : 19/09/2005                 --*/                                
/*---Base Datos           : Microsoft Sql Server       --*/                                
/*---Versi©n              : 8.0                        --*/                                
/*---Invoca a SP          :                            --*/                                
/*-------------------------------------------------------*/                                
/*-------------------------------------------------------*/                                
/*---Modificado 1 por     : Carlos Márquez Escobar     --*/                                
/*---Fecha Modificaci©n   : 08/11/2005                 --*/                                 
/*---Detalle Modificaci©n : Nuevos Campos              --*/                                
/*-------------------------------------------------------*/                                
/*-------------------------------------------------------*/   
/*---------------------------------------------------------*/        
/*---Modificado 1 por     : Manuel De La Cruz            --*/        
/*---Fecha Modificaci½n   : 07/12/2009                   --*/         
/*---Detalle Modificaci½n : Agrege 2 columnas:   --*/   
/*       CO_DEPE_ADUA, NU_ANNO_ADUA   --*/        
/*---------------------------------------------------------*/  
                               
/*---Drop Proc SP_TMDOCU_PROV_Q51                      --*/                                
/*---Grant Execute on SP_TMDOCU_PROV_Q51 to public         --*/                                 
/*---                                
Create Table #TWREGI_COM1_RC01 (            
 NU_CORR_COMP  VarChar(20)  Null  )            
            
Create Table #TWREGI_COM1_RC02 (            
 CO_PROV  VarChar(20)  Null,            
 CO_TIPO_DOCU  VarChar(03)  Null,            
 NU_DOCU_PROV  VarChar(20)  Null,            
 NU_CORR_COMP  VarChar(20)  Null  )            
            
Create Table #TWREGI_COM1 (            
 DE_TIPO_REPO  VarChar(20) Null,            
 CO_SUNA  VarChar(2)  Null,            
 FE_EMIS   DateTime  Null,            
 NU_CORR_COMP  VarChar(20) Null,            
 CO_TIPO_OPER  VarChar(03) Null,            
 CO_OPRC_CNTB  VarChar(03) Null,            
 DE_OPRC  VarChar(50) Null,            
 NU_ASTO  VarChar(10) Null,            
 CO_TIPO_DOCU  VarChar(3)  Null,            
 NU_DOCU_PROV  VarChar(20) Null,            
 CO_MONE  VarChar(3)  Null,            
 NU_RUCS  VarChar(20) Null,            
 NO_AUXI   VarChar(100) Null,            
 IB_BRUT_AFEC   Numeric(16,4)  Null,            
 IB_OPER_GRAV   Numeric(16,4)  Null,            
 IB_OPER_SCRF   Numeric(16,4)  Null,            
 IB_OPER_INAF   Numeric(16,4)  Null,            
 IB_SELE_CONS   Numeric(16,4)  Null,            
 IG_OPER_GRAV  Numeric(16,4)  Null,            
 IG_OPSE_GRAV   Numeric(16,4)  Null,            
 IG_OPSI_CRFI   Numeric(16,4)  Null,            
 IR_CUAR_CATE   Numeric(16,4)  Null,            
 IM_IESS    Numeric(16,4)  Null,            
 IM_TOTA   Numeric(16,4)  Null,            
 IM_AJUS   Numeric(16,4)  Null,            
 FA_TIPO_CAMB  Numeric(15,6)  Null,            
 FA_CAMB_EXTR  Numeric(15,6)  Null,            
 FA_CAMB  Numeric(15,6)  Null,            
 CO_IMP1   VarChar(03)  Null,            
 PC_IMP1   Numeric(9,4)  Null,            
 IM_IMP1   Numeric(16,4)  Null,            
 CO_IMP2   VarChar(03)  Null,            
 PC_IMP2   Numeric(9,4)  Null,            
 IM_IMP2   Numeric(16,4)  Null,            
 CO_IMP3   VarChar(03)  Null,            
 PC_IMP3   Numeric(9,4)  Null,            
 ST_SIGN   VarChar(1) Null,            
 CO_ESTA_DOCU  VarChar(3)  Null,       
 CO_SUNA_ORIG  VarChar(2)  Null,            
 NU_DOCU_ORIG  VarChar(20)  Null,            
 FE_DOCU_ORIG  DateTime  Null,            
 NU_DEPO_DETR  VarChar(20)  Null,            
 FE_DEPO_DETR  DateTime  Null,            
 NU_COMP_SERV  VarChar(20)  Null,            
 FL_RETE    VarChar(1)  Null,            
 FE_ULTI_PAGO   DateTime  Null,            
 NO_DOCU    VarChar(50) Null,             
 CO_DOCU_SUNA  VarChar(03) Null,             
 NU_DOCU_SUNA   VarChar(20) Null,            
 IB_GRAV_NGRA  Numeric(16,4)  Null,            
 IG_GRAV_NGRA  Numeric(16,4)  Null,             
    IG_OTRO_TRIB  Numeric(16,4)  Null,             
 NU_DOCU_NDOM  Varchar(20) Null)            
            
Create  Table #TWTIPO_DORC(TI_DOCU_PROV  varchar(100) Null)            
            
Insert Into #TWREGI_COM1_RC02            
( CO_PROV, CO_TIPO_DOCU, NU_DOCU_PROV, NU_CORR_COMP )            
Select   TMDOCU_PROV.CO_PROV, TMDOCU_PROV.CO_TIPO_DOCU, TMDOCU_PROV.NU_DOCU_PROV, TMDOCU_PROV.NU_CORR_COMP            
From  TMDOCU_PROV, TTDOCU_CNTB T3            
Where TMDOCU_PROV.CO_EMPR  = '01'            
And T3.TI_DOCU = TMDOCU_PROV.CO_TIPO_DOCU            
and T3.TI_DOCU != 'RXH'            
And T3.ST_REGI_COMP = 'S'            
            
SP_TMDOCU_PROV_Q51 '01', 'O'                        
            
            
Select DE_TIPO_REPO AS TIPO_REPORTE, FE_EMIS AS FECHA_EMISION, Convert(Varchar(10), FE_ULTI_PAGO, 103) AS FECHA_PAGO,             
 NU_CORR_COMP AS CORRELATIVO, NU_ASTO AS ASIENTO, CO_SUNA AS DOC_SUNAT,  NU_DOCU_PROV AS NUMERO_DOC,             
 CO_DOCU_SUNA AS TIPO_DOC_IDENTIDAD, NU_DOCU_SUNA AS NUME_DOC_IDENTIDAD, NO_AUXI AS RAZON_SOCIAL,             
 IB_BRUT_AFEC AS OP_GRAVADAS, IB_OPER_GRAV AS OP_NO_GRAVADO, IB_GRAV_NGRA AS OP_GRAVADAS_Y_NO_GRAVADAS, IB_OPER_INAF AS ADQ_NO_GRAVADAS,             
 IG_OPER_GRAV AS IGV_OP_GRAVADAS, IG_OPSE_GRAV AS IGV_OP_NO_GRAVADAS, IG_GRAV_NGRA AS IGV_OP_GRAVADAS_Y_NO_GRAVADAS, IG_OTRO_TRIB AS OTROS_TRIBUTOS,       
 IM_TOTA AS TOTAL, NU_DOCU_NDOM AS DOC_NO_DOMICILIADO,             
 NU_DEPO_DETR AS DEPOSITO_DETRACCION, FE_DEPO_DETR AS FECHA_DEPOSITO, FA_TIPO_CAMB AS TIPO_CAMBIO,            
 FE_DOCU_ORIG AS FECHA_DOC_ORIGEN, CO_SUNA_ORIG AS TIPO_DOC_ORIGEN, NU_DOCU_ORIG AS NUMERO_DOC_ORIGEN,             
 ST_SIGN AS SIGNO, CO_ESTA_DOCU AS ESTADO, CO_MONE AS MONEDA, IM_AJUS,             
 CO_OPRC_CNTB,  DE_OPRC,  NO_DOCU            
From  #TWREGI_COM1            
            
Select T1.CO_SUNA+' '+T2.NO_DOCU DOCUMENTO,      
 Sum((Patindex(T2.ST_SIGN, 'S')- Patindex(T2.ST_SIGN, 'N'))*T1.IB_BRUT_AFEC) OP_GRAVADAS,      
 Sum((Patindex(T2.ST_SIGN, 'S')- Patindex(T2.ST_SIGN, 'N'))*T1.IB_OPER_GRAV) OP_NO_GRAVADO,      
 Sum((Patindex(T2.ST_SIGN, 'S')- Patindex(T2.ST_SIGN, 'N'))*T1.IB_GRAV_NGRA) OP_GRAVADAS_Y_NO_GRAVADAS,      
 Sum((Patindex(T2.ST_SIGN, 'S')- Patindex(T2.ST_SIGN, 'N'))*T1.IB_OPER_INAF) ADQ_NO_GRAVADAS,      
 Sum((Patindex(T2.ST_SIGN, 'S')- Patindex(T2.ST_SIGN, 'N'))*T1.IG_OPER_GRAV) IGV_OP_GRAVADAS,      
 Sum((Patindex(T2.ST_SIGN, 'S')- Patindex(T2.ST_SIGN, 'N'))*T1.IG_OPSE_GRAV) IGV_OP_NO_GRAVADAS,      
 Sum((Patindex(T2.ST_SIGN, 'S')- Patindex(T2.ST_SIGN, 'N'))*T1.IG_GRAV_NGRA) IGV_OP_GRAVADAS_Y_NO_GRAVADAS,      
 Sum((Patindex(T2.ST_SIGN, 'S')- Patindex(T2.ST_SIGN, 'N'))*T1.IG_OTRO_TRIB) OTROS_TRIBUTOS,      
 Sum((Patindex(T2.ST_SIGN, 'S')- Patindex(T2.ST_SIGN, 'N'))*T1.IM_TOTA)  IM_TOTA       
From  #TWREGI_COM1 T1 , TTDOCU_CNTB T2      
Where  T1.CO_SUNA = T2.CO_SUNA      
And  T1.CO_TIPO_DOCU = T2.TI_DOCU      
Group By  T1.CO_SUNA+' '+T2.NO_DOCU      
Order By T1.CO_SUNA+' '+T2.NO_DOCU      
                      
--*/                                
/*-------------------------------------------------------*/                                
 @ISCO_EMPR      TD_VC_002,                                 
 @ISTI_REPO      TD_VC_001                                
--                         
As                              
DECLARE                                  
@VSCO_MONE_NACI  TD_VC_003,                                
@VSCO_MONE_EXTR  TD_VC_003,                                
@VSTI_CAMB   TD_VC_001,                                
@VSTI_ORIG   TD_VC_001,                        
@VSCO_TIAU_PROV  TD_VC_001,                                
@VNIM_MAXI_NRET  TD_NU_016_004,                                
@VNNU_REGI_ELIM  TD_IN_001                                
                                
Select @VSTI_CAMB = TI_CAMB, @VSTI_ORIG = TI_ORIG                
From TTFACA_OPCI                                      
Where CO_EMPR = @ISCO_EMPR                                      
And CO_MODU = 'TEEM0001'                                      
And CO_MENU = 'FTEEMBA'                                      
                                      
If ( @VSTI_CAMB Is Null Or @VSTI_ORIG Is Null )                                    
 Select @VSTI_CAMB = TI_CAMB, @VSTI_ORIG = TI_ORIG,                                
   @VSCO_MONE_NACI = CO_MONE_DEFA, @VSCO_MONE_EXTR = CO_MONE_EXTR,                                
   @VSCO_TIAU_PROV = CO_TIAU_PROV,                                
   @VNIM_MAXI_NRET = IM_MAXI_NRET                                
 From TMPARA_TESO                                      
 Where CO_EMPR = @ISCO_EMPR                                      
Else                                      
 Select @VSCO_MONE_NACI = CO_MONE_DEFA,                                 
   @VSCO_MONE_EXTR = CO_MONE_EXTR,                                
   @VSCO_TIAU_PROV = CO_TIAU_PROV,                                
   @VNIM_MAXI_NRET = IM_MAXI_NRET                                
 From TMPARA_TESO                                      
 Where CO_EMPR = @ISCO_EMPR                                
                                
                                
if @ISTI_REPO = 'O'                                
Begin ---Inicio Reporte O F I C I A L ---                                
 Insert Into #TWREGI_COM1                                
 (DE_TIPO_REPO, CO_SUNA,   FE_EMIS,   NU_CORR_COMP,  CO_TIPO_OPER, NU_ASTO,   NU_DOCU_PROV,  NU_RUCS,   NO_AUXI,                                
  CO_TIPO_DOCU, CO_MONE,   IB_BRUT_AFEC, IB_OPER_GRAV ,  IB_OPER_SCRF, IB_OPER_INAF ,IB_SELE_CONS,              
  IG_OPER_GRAV, IG_OPSE_GRAV, IG_OPSI_CRFI, IR_CUAR_CATE ,IM_IESS ,    IM_TOTA,            
  FA_TIPO_CAMB, FA_CAMB_EXTR, CO_IMP1, PC_IMP1, CO_IMP2,                           
  PC_IMP2, CO_IMP3, PC_IMP3, ST_SIGN, CO_ESTA_DOCU, CO_SUNA_ORIG, NU_DOCU_ORIG,   FE_DOCU_ORIG,  NU_DEPO_DETR,                         
  FE_DEPO_DETR, NU_COMP_SERV, FL_RETE, FE_ULTI_PAGO, NO_DOCU, CO_DOCU_SUNA, NU_DOCU_SUNA, IB_GRAV_NGRA, IG_GRAV_NGRA,             
  IG_OTRO_TRIB, NU_DOCU_NDOM, CO_DEPE_ADUA, NU_ANNO_ADUA)                                
-- REGISTROS DE COMPRAS --               
 Select 'REG_COMPRAS' As TIPO, T3.CO_SUNA As CODIGO_SUNAT, TMDOCU_PROV.FE_EMIS As FECHA_EMISION,                                
  TMDOCU_PROV.NU_CORR_COMP As CORRELATIVO, TMDOCU_PROV.CO_TIPO_OPER As CO_TIPO_OPER, TMDOCU_PROV.NU_ASTO As NRO_ASIENTO,                     
  Case When T3.ST_DOCU_0026 = 'S' Or T3.ST_DOCU_0027 = 'S' Then  NULL Else TMDOCU_PROV.NU_DOCU_PROV End As NUMERO_DOCUMENTO,             
  T2.NU_RUCS As RUC_PROVEEDOR, T2.NO_AUXI As NOMB_PROV,                                
  TMDOCU_PROV.CO_TIPO_DOCU, TMDOCU_PROV.CO_MONE As MONE,             
  ---B1.---                      
   Case When TMDOCU_PROV.CO_ESTA_DOCU != 'ANU' Then              
    Case When T3.ST_DOCU_0027 = 'S' Then               
      Round(OFITESO.dbo.FN_TCFACT_CAMB_Q02(TMDOCU_PROV.CO_MONE, @VSCO_MONE_NACI, TMDOCU_PROV.FE_EMIS,                                    
      TMDOCU_PROV.IM_BRUT_AFEC, @VSTI_CAMB, @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, TMDOCU_PROV.FA_TIPO_CAMB), 2)                     
/*     When T3.ST_DOCU_0026 = 'S' Then             
   Round(OFITESO.dbo.FN_TCFACT_CAMB_Q02(TMDOCU_PROV.CO_MONE, @VSCO_MONE_NACI, TMDOCU_PROV.FE_EMIS,           
      IsNull(TMDOCU_PROV.IM_BRUT_AFEC,0), @VSTI_CAMB, @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR,             
      TMDOCU_PROV.FA_TIPO_CAMB), 2)                               */  
     When T3.ST_DOCU_0026 = 'S' Or T3.TI_DOCU = 'NCN' Then 0.00  
     When T3.ST_DOCU_0023 = 'S' Or T3.ST_DOCU_0024 = 'S' Then             
   Round(OFITESO.dbo.FN_TCFACT_CAMB_Q02(TMDOCU_PROV.CO_MONE, @VSCO_MONE_NACI, TMDOCU_PROV.FE_EMIS,                                    
      IsNull(TMDOCU_PROV.IM_BRUT_AFEC,0), @VSTI_CAMB, @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, TMDOCU_PROV.FA_TIPO_CAMB), 2)  
     Else               
      Round(OFITESO.dbo.FN_TCFACT_CAMB_Q02(TMDOCU_PROV.CO_MONE, @VSCO_MONE_NACI, TMDOCU_PROV.FE_EMIS,               
      TMDOCU_PROV.IM_BRUT_AFEC - IsNull(TMDOCU_PROV.IM_SCRF,0) +               
      PatIndex(TMDOCU_PROV.ST_AFEC_GAFI, 'S') * TMDOCU_PROV.IM_GAFI -               
      (TMDOCU_PROV.IM_DCT1 + TMDOCU_PROV.IM_DCT2), @VSTI_CAMB, @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, TMDOCU_PROV.FA_TIPO_CAMB), 2)  
    End                   
  Else 0.00              
  End As AG_GRAV,               
  ---B2.---                  
   Case WHEN TMDOCU_PROV.CO_ESTA_DOCU != 'ANU' THEN                                    
    Case                                     
     When T3.ST_DOCU_0026 = 'S' Then 0.00                     
     When T3.ST_DOCU_0027 = 'S' Then 0.00                                    
     When T3.ST_DOCU_0023 = 'S' Or T3.ST_DOCU_0024 = 'S' Then 0.00                                    
     Else Round(OFITESO.dbo.FN_TCFACT_CAMB_Q02(TMDOCU_PROV.CO_MONE, @VSCO_MONE_NACI, TMDOCU_PROV.FE_EMIS,                                    
      IsNull(TMDOCU_PROV.IM_SCRF,0),                                     
      @VSTI_CAMB, @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, TMDOCU_PROV.FA_TIPO_CAMB), 2)                                    
    End                   
--   ELSE 0.00                  
--   END                
  ELSE 0.00                  
  END  As AG_NGRA,                                   
  ---B3.---              
  0.00  As AG_NDOM,                                    
  ---B4.---                                    
 CASE WHEN TMDOCU_PROV.CO_ESTA_DOCU != 'ANU' THEN                    
   Case                               
   When T3.ST_DOCU_0026 = 'S' Or T3.TI_DOCU = 'NCN' Then   
    Round(OFITESO.dbo.FN_TCFACT_CAMB_Q02(TMDOCU_PROV.CO_MONE, @VSCO_MONE_NACI, TMDOCU_PROV.FE_EMIS,   
       IsNull(TMDOCU_PROV.IM_BRUT_INAF,0), @VSTI_CAMB, @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR,   
       TMDOCU_PROV.FA_TIPO_CAMB), 2) +  
    Round(OFITESO.dbo.FN_TCFACT_CAMB_Q02(TMDOCU_PROV.CO_MONE, @VSCO_MONE_NACI, TMDOCU_PROV.FE_EMIS,   
       IsNull(TMDOCU_PROV.IM_BRUT_AFEC,0), @VSTI_CAMB, @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR,   
       TMDOCU_PROV.FA_TIPO_CAMB), 2)   
    When T3.ST_DOCU_0028 = 'S' Then                           
     Round(OFITESO.dbo.FN_TCFACT_CAMB_Q02(TMDOCU_PROV.CO_MONE, @VSCO_MONE_NACI, TMDOCU_PROV.FE_EMIS,                                    
     IsNull(TMDOCU_PROV.IM_BRUT_INAF,0),                                     
     @VSTI_CAMB, @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, TMDOCU_PROV.FA_TIPO_CAMB), 2)                             
    When T3.ST_DOCU_0027 = 'S' Then 0.00                                               
    When T3.ST_DOCU_0023 = 'S' Or T3.ST_DOCU_0024 = 'S' Then 0.00                                    
    Else                                     
     Round(OFITESO.dbo.FN_TCFACT_CAMB_Q02(TMDOCU_PROV.CO_MONE, @VSCO_MONE_NACI, TMDOCU_PROV.FE_EMIS,                                    
     TMDOCU_PROV.IM_BRUT_INAF +                                     
  PatIndex(TMDOCU_PROV.ST_AFEC_GAFI, 'N') * TMDOCU_PROV.IM_GAFI +                                     
     PatIndex(TMDOCU_PROV.ST_AFEC_FLET, 'N') * TMDOCU_PROV.IM_FLET +                                     
     PatIndex(TMDOCU_PROV.ST_AFEC_MORA, 'N') * TMDOCU_PROV.IM_MORA,                                     
     @VSTI_CAMB, @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, TMDOCU_PROV.FA_TIPO_CAMB), 2)                                    
   End                   
 ELSE 0.00                  
 END As IB_OPER_INAF,                                    
  ---B5.---                                    
     0.00 As IB_SELE_CONS,                                    
  ---I.1---                 
  CASE WHEN TMDOCU_PROV.CO_ESTA_DOCU != 'ANU' THEN                    
    Case When T3.ST_DOCU_0027 = 'S' Then                                    
      Round(OFITESO.dbo.FN_TCFACT_CAMB_Q02(TMDOCU_PROV.CO_MONE, @VSCO_MONE_NACI, TMDOCU_PROV.FE_EMIS,                                    
      IsNull(TMDOCU_PROV.IM_IMP1,0),                                     
      @VSTI_CAMB, @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, TMDOCU_PROV.FA_TIPO_CAMB), 2)                                    
/*     When T3.ST_DOCU_0026 = 'S' Then             
      ABS(Round(Isnull(OFITESO.dbo.FN_TCFACT_CAMB_Q02(TMDOCU_PROV.CO_MONE, @VSCO_MONE_NACI, TMDOCU_PROV.FE_EMIS,                    
      (SELECT TDDISP_CCOS.IM_DIST                     
      FROM   TDDISP_CCOS                     
      WHERE  TDDISP_CCOS.CO_EMPR = TMDOCU_PROV.CO_EMPR                    
      AND    TDDISP_CCOS.CO_PROV = TMDOCU_PROV.CO_PROV                    
      AND    TDDISP_CCOS.CO_TIPO_DOCU = TMDOCU_PROV.CO_TIPO_DOCU                    
      AND    TDDISP_CCOS.NU_DOCU_PROV = TMDOCU_PROV.NU_DOCU_PROV                    
      AND    TDDISP_CCOS.CO_CNTA_EMPR = '401110'), @VSTI_CAMB, @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR,               
      TMDOCU_PROV.FA_TIPO_CAMB), 0), 2)) + Round(OFITESO.dbo.FN_TCFACT_CAMB_Q02(TMDOCU_PROV.CO_MONE, @VSCO_MONE_NACI, TMDOCU_PROV.FE_EMIS,                                    
         ( TMDOCU_PROV.IM_IMP1 * PATINDEX( SUBSTRING( IsNull( TMDOCU_PROV.CO_IMP1, '0'), 1, 2), 'ND' ) ),                                     
          @VSTI_CAMB, @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, TMDOCU_PROV.FA_TIPO_CAMB), 2)          */  
     When T3.ST_DOCU_0026 = 'S' Or T3.TI_DOCU = 'NCN' Then 0.00  
     When T3.ST_DOCU_0023 = 'S' Or T3.ST_DOCU_0024 = 'S' Then 0.00                                     
     Else ISNULL((Round(OFITESO.dbo.FN_TCFACT_CAMB_Q02(TMDOCU_PROV.CO_MONE, @VSCO_MONE_NACI, TMDOCU_PROV.FE_EMIS,                           
      (( TMDOCU_PROV.IM_IMP1 * PATINDEX( SUBSTRING( IsNull( TMDOCU_PROV.CO_IMP1, '0'), 1, 2), 'IG' ) ) +                                    
       ( TMDOCU_PROV.IM_IMP2 * PATINDEX( SUBSTRING( IsNull( TMDOCU_PROV.CO_IMP2, '0'), 1, 2), 'IG' ) ) +                                    
       ( TMDOCU_PROV.IM_IMP3 * PATINDEX( SUBSTRING( IsNull( TMDOCU_PROV.CO_IMP3, '0'), 1, 2), 'IG' ) ) ),            
      @VSTI_CAMB, @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, TMDOCU_PROV.FA_TIPO_CAMB), 2) ), 0)            
    End                    
--  ELSE 0.00                  
--  END               
  ELSE 0.00                  
  END As IG_GRAV,                                  
  ---I.2---                   
--  Case When ST_GRAV_NGRA = 'NGR' Then             
  CASE WHEN TMDOCU_PROV.CO_ESTA_DOCU != 'ANU' THEN                    
    Case                                     
     When T3.ST_DOCU_0026 = 'S' Then 0.00                                    
     When T3.ST_DOCU_0027 = 'S' Then 0.00                                    
     When T3.ST_DOCU_0023 = 'S' Or T3.ST_DOCU_0024 = 'S' Then 0.00                                     
     Else    ISNULL((                                
      Round(OFITESO.dbo.FN_TCFACT_CAMB_Q02(TMDOCU_PROV.CO_MONE, @VSCO_MONE_NACI, TMDOCU_PROV.FE_EMIS,               
   ( ( TMDOCU_PROV.IM_SCF1 * PATINDEX( SUBSTRING( IsNull( TMDOCU_PROV.CO_IMP1, '0'), 1, 2), 'IG' ) ) +                                    
        ( TMDOCU_PROV.IM_SCF2 * PATINDEX( SUBSTRING( IsNull( TMDOCU_PROV.CO_IMP2, '0'), 1, 2), 'IG' ) ) +                                    
        ( TMDOCU_PROV.IM_SCF3 * PATINDEX( SUBSTRING( IsNull( TMDOCU_PROV.CO_IMP3, '0'), 1, 2), 'IG' ) ) ),                                     
          @VSTI_CAMB, @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, TMDOCU_PROV.FA_TIPO_CAMB), 2)),0)                                  
    End                   
--  ELSE 0.00                  
--END               
  ELSE 0.00                  
  END As IG_NGRA,                                    
  ---I.3---                   
  0.00 AS IG_NDOM,            
  -- I.4 --               
  0.00 As IR_CUAR_CATE,                                    
  -- I.5 --             
  0.00 As IR_NDOM,            
  CASE                   
  WHEN TMDOCU_PROV.CO_ESTA_DOCU != 'ANU' THEN                    
    Round(OFITESO.dbo.FN_TCFACT_CAMB_Q02(TMDOCU_PROV.CO_MONE, @VSCO_MONE_NACI, TMDOCU_PROV.FE_EMIS,                                    
    TMDOCU_PROV.IM_TOTA,                                     
    @VSTI_CAMB, @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, TMDOCU_PROV.FA_TIPO_CAMB), 2)                   
  ELSE 0.00                  
  END As IM_TOTA,            
  Case When TMDOCU_PROV.CO_MONE != @VSCO_MONE_NACI Then TMDOCU_PROV.FA_TIPO_CAMB Else Null End As Tipo_Cambio,             
  TMDOCU_PROV.FA_CAMB_EXTR, TMDOCU_PROV.CO_IMP1, TMDOCU_PROV.PC_IMP1,                             
  TMDOCU_PROV.CO_IMP2, TMDOCU_PROV.PC_IMP2,                                    
  TMDOCU_PROV.CO_IMP3, TMDOCU_PROV.PC_IMP3,                                    
                                     
  T3.ST_SIGN As SIGNO,                                    
                                     
  TMDOCU_PROV.CO_ESTA_DOCU As ESTADO,                                    
  T5.CO_SUNA, TMDOCU_PROV.NU_DOCU_ORIG, TMDOCU_PROV.FE_DOCU_ORIG,                                     
  TMDOCU_PROV.NU_DEPO_DETR As COMPROBANTE, TMDOCU_PROV.FE_DEPO_DETR As FE_DEPO_DETRACCION,                                     
  TMDOCU_PROV.NU_COMP_SERV,                         
  DBO.FU_RETE_FLAG( TMDOCU_PROV.CO_EMPR, T2.ST_RETE, T2.ST_BCON, T3.ST_RETE,  TMDOCU_PROV.FE_EMIS,  @VNIM_MAXI_NRET,                    
  TMDOCU_PROV.IM_IMP1, T3.ST_DOCU_0004,                                    
  dbo.FN_TCFACT_CAMB_Q02(TMDOCU_PROV.CO_MONE, @VSCO_MONE_NACI,TMDOCU_PROV.FE_EMIS, TMDOCU_PROV.IM_TOTA, @VSTI_CAMB,                    
  @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR,                                    
  TMDOCU_PROV.FA_TIPO_CAMB))  'RETENCION' ,                                 
  (CASE                 
   When TMDOCU_PROV.CO_TIPO_DOCU IN (Select TI_DOCU_PROV From #TWTIPO_DORC) THEN                                    
   DBO.FU_FECH_PAGO( @ISCO_EMPR, TMDOCU_PROV.CO_PROV,  TMDOCU_PROV.CO_TIPO_DOCU, TMDOCU_PROV.NU_DOCU_PROV, TMDOCU_PROV.FE_VENC)                                    
   Else                 
   NULL                 
   END) 'FE_VENC', T3.NO_DOCU, T2.CO_DOCU_SUNA, T2.NU_DOCU_SUNA,             
            
  CASE WHEN ST_GRAV_NGRA = 'GNG' THEN             
   Case             
   When T3.ST_DOCU_0027 = 'S' Then             
    Round(OFITESO.dbo.FN_TCFACT_CAMB_Q02(TMDOCU_PROV.CO_MONE, @VSCO_MONE_NACI, TMDOCU_PROV.FE_EMIS,                                  
    TMDOCU_PROV.IM_BRUT_AFEC, @VSTI_CAMB, @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, TMDOCU_PROV.FA_TIPO_CAMB), 2)                          
   When T3.ST_DOCU_0026 = 'S' Then 0.00             
   When T3.ST_DOCU_0023 = 'S' Or T3.ST_DOCU_0024 = 'S' Then 0.00                                   
   Else             
    Round(OFITESO.dbo.FN_TCFACT_CAMB_Q02(TMDOCU_PROV.CO_MONE, @VSCO_MONE_NACI, TMDOCU_PROV.FE_EMIS,             
    TMDOCU_PROV.IM_BRUT_AFEC - IsNull(TMDOCU_PROV.IM_SCRF,0) +             
    PatIndex(TMDOCU_PROV.ST_AFEC_GAFI, 'S') * TMDOCU_PROV.IM_GAFI -             
    (TMDOCU_PROV.IM_DCT1 + TMDOCU_PROV.IM_DCT2),             
    @VSTI_CAMB, @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, TMDOCU_PROV.FA_TIPO_CAMB), 2)             
   End             
  Else 0.00             
  End As IB_GRAV_NGRA,             
            
  CASE WHEN ST_GRAV_NGRA = 'GNG'THEN             
 Case When T3.ST_DOCU_0027 = 'S' Then             
   Round(OFITESO.dbo.FN_TCFACT_CAMB_Q02(TMDOCU_PROV.CO_MONE, @VSCO_MONE_NACI, TMDOCU_PROV.FE_EMIS,             
   IsNull(TMDOCU_PROV.IM_IMP1,0),             
   @VSTI_CAMB, @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, TMDOCU_PROV.FA_TIPO_CAMB), 2)            
 When T3.ST_DOCU_0026 = 'S' Then 0.00            
 When T3.ST_DOCU_0023 = 'S' Or T3.ST_DOCU_0024 = 'S' Then 0.00            
 Else ISNULL((            
   Round(OFITESO.dbo.FN_TCFACT_CAMB_Q02(TMDOCU_PROV.CO_MONE, @VSCO_MONE_NACI, TMDOCU_PROV.FE_EMIS,             
   (( TMDOCU_PROV.IM_IMP1 * PATINDEX( SUBSTRING( IsNull( TMDOCU_PROV.CO_IMP1, '0'), 1, 2), 'IG' ) ) +             
   (  TMDOCU_PROV.IM_IMP2 * PATINDEX( SUBSTRING( IsNull( TMDOCU_PROV.CO_IMP2, '0'), 1, 2), 'IG' ) ) +             
   (  TMDOCU_PROV.IM_IMP3 * PATINDEX( SUBSTRING( IsNull( TMDOCU_PROV.CO_IMP3, '0'), 1, 2), 'IG' ) ) ),             
   @VSTI_CAMB, @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, TMDOCU_PROV.FA_TIPO_CAMB), 2) ),0)            
 End             
  Else 0.00             
  End As IG_GRAV_NGRA,             
               
  /*Case When SUBSTRING(IsNull( TMDOCU_PROV.CO_IMP1, '0'), 1, 2) NOT IN ('IG', 'ND')             
  Then TMDOCU_PROV.IM_IMP1 Else 0.00 End +            
  Case When SUBSTRING(IsNull( TMDOCU_PROV.CO_IMP2, '0'), 1, 2) NOT IN ('IG', 'ND')             
  Then TMDOCU_PROV.IM_IMP2 Else 0.00 End +             
  Case When SUBSTRING(IsNull( TMDOCU_PROV.CO_IMP3, '0'), 1, 2) NOT IN ('IG', 'ND')             
  Then TMDOCU_PROV.IM_IMP3 Else 0.00 End +   */
 /* -- CAMBIO GUIDO / OTROS TRIBUTOS */                  
   Case When SUBSTRING(IsNull( TMDOCU_PROV.CO_IMP1, '0'), 1, 2) NOT IN ('IG', 'ND')                     
  Then -- TMDOCU_PROV.IM_IMP1 - ANTERIOR  
       Round(OFITESO.dbo.FN_TCFACT_CAMB_Q02(TMDOCU_PROV.CO_MONE, @VSCO_MONE_NACI, TMDOCU_PROV.FE_EMIS,     
         IsNull(TMDOCU_PROV.IM_IMP1,0),@VSTI_CAMB, @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, TMDOCU_PROV.FA_TIPO_CAMB), 2)   
 Else 0.00 End +                    
   Case When SUBSTRING(IsNull( TMDOCU_PROV.CO_IMP2, '0'), 1, 2) NOT IN ('IG', 'ND')                     
  Then -- TMDOCU_PROV.IM_IMP2 - ANTERIOR  
       Round(OFITESO.dbo.FN_TCFACT_CAMB_Q02(TMDOCU_PROV.CO_MONE, @VSCO_MONE_NACI, TMDOCU_PROV.FE_EMIS,     
         IsNull(TMDOCU_PROV.IM_IMP2,0),@VSTI_CAMB, @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, TMDOCU_PROV.FA_TIPO_CAMB), 2)   
 Else 0.00 End +                     
   Case When SUBSTRING(IsNull( TMDOCU_PROV.CO_IMP3, '0'), 1, 2) NOT IN ('IG', 'ND')             
  Then -- TMDOCU_PROV.IM_IMP3 - ANTERIOR  
       Round(OFITESO.dbo.FN_TCFACT_CAMB_Q02(TMDOCU_PROV.CO_MONE, @VSCO_MONE_NACI, TMDOCU_PROV.FE_EMIS,     
         IsNull(TMDOCU_PROV.IM_IMP3,0),@VSTI_CAMB, @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, TMDOCU_PROV.FA_TIPO_CAMB), 2)   
 Else 0.00 End +   
  Case When T3.ST_DOCU_0026 = 'S' Or T3.TI_DOCU = 'NCN' Then   
       Round(OFITESO.dbo.FN_TCFACT_CAMB_Q02(TMDOCU_PROV.CO_MONE, @VSCO_MONE_NACI, TMDOCU_PROV.FE_EMIS,   
         ( TMDOCU_PROV.IM_IMP1 * PATINDEX( SUBSTRING( IsNull( TMDOCU_PROV.CO_IMP1, '0'), 1, 2), 'ND' ) ),   
          @VSTI_CAMB, @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, TMDOCU_PROV.FA_TIPO_CAMB), 2) Else 0.00 End As IG_OTRO_TRIB,   
            
  Case When T3.ST_DOCU_0026 = 'S'  Or T3.ST_DOCU_0027 = 'S' Then NU_DOCU_PROV Else null End,  
 TMDOCU_PROV.CO_DEPE_ADUA, TMDOCU_PROV.NU_ANNO_ADUA          
            
 From TMDOCU_PROV                              
 Left Outer Join TTDOCU_CNTB T5                               
 On TMDOCU_PROV.TI_DOCU_ORIG = T5.TI_DOCU, TMAUXI_EMPR T2, TTDOCU_CNTB T3                                
 Where  TMDOCU_PROV.CO_EMPR  = @ISCO_EMPR                                
     And T2.CO_EMPR = TMDOCU_PROV.CO_EMPR                                
     And T2.TI_AUXI_EMPR = @VSCO_TIAU_PROV                                
     And T2.CO_AUXI_EMPR = TMDOCU_PROV.CO_PROV                                
     And T3.TI_DOCU = TMDOCU_PROV.CO_TIPO_DOCU                                
     And T3.ST_DOCU_0010 = 'N'                                
     And T3.ST_REGI_COMP = 'S'                                
     And Exists ( Select #TWREGI_COM1_RC02.NU_CORR_COMP                                
    From #TWREGI_COM1_RC02                                
    Where #TWREGI_COM1_RC02.CO_PROV = TMDOCU_PROV.CO_PROV And                
    #TWREGI_COM1_RC02.CO_TIPO_DOCU = TMDOCU_PROV.CO_TIPO_DOCU And                
    #TWREGI_COM1_RC02.NU_DOCU_PROV = TMDOCU_PROV.NU_DOCU_PROV)            
 Union All              
-- RECIBO POR HONORARIOS --               
 Select                                   
  'REG_RECxHON' As TIPO, T3.CO_SUNA As CODIGO_SUNAT, TMDOCU_PROV.FE_EMIS As FECHA_EMISION,                                
  TMDOCU_PROV.NU_CORR_COMP As CORRELATIVO, TMDOCU_PROV.CO_TIPO_OPER As CO_TIPO_OPER, TMDOCU_PROV.NU_ASTO As NRO_ASIENTO,                     
  TMDOCU_PROV.NU_DOCU_PROV As NUMERO_DOCUMENTO, T2.NU_RUCS As RUC_PROVEEDOR, T2.NO_AUXI As NOMB_PROV,                                
  TMDOCU_PROV.CO_TIPO_DOCU, TMDOCU_PROV.CO_MONE As MONE,             
  ---B1.---                                
  0.00 As IB_BRUT_AFEC,                                
  ---B2.---                                
  0.00 As IB_OPER_GRAV,                                
  ---B3.---                                
  0.00 As IB_OPER_SCRF,                              
  ---B4.---                                
  CASE                   
  WHEN TMDOCU_PROV.CO_ESTA_DOCU != 'ANU' THEN                              
    Round(OFITESO.dbo.FN_TCFACT_CAMB_Q02(TMDOCU_PROV.CO_MONE, 'SOL', TMDOCU_PROV.FE_EMIS,                          
    TMDOCU_PROV.IM_BRUT_INAF + TMDOCU_PROV.IM_GAFI - TMDOCU_PROV.IM_DCT1 - TMDOCU_PROV.IM_DCT2,                          
    'C', 'O', 'S', 'SOL', 'DOL', TMDOCU_PROV.FA_TIPO_CAMB), 2)                    
  ELSE 0.00                  
  END As IB_OPER_INAF,                                
    ---B5.---                    
  CASE WHEN TMDOCU_PROV.CO_ESTA_DOCU != 'ANU' THEN                              
    Round(OFITESO.dbo.FN_TCFACT_CAMB_Q02(TMDOCU_PROV.CO_MONE, @VSCO_MONE_NACI, TMDOCU_PROV.FE_EMIS,                          
    TMDOCU_PROV.IM_BRUT_AFEC + TMDOCU_PROV.IM_GAFI - TMDOCU_PROV.IM_DCT1 - TMDOCU_PROV.IM_DCT2,                          
    @VSTI_CAMB, @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, TMDOCU_PROV.FA_TIPO_CAMB), 2)                   
  ELSE 0.00                  
  END As IB_SELE_CON1,                                   
                      
  ---I.1---                          
  0.00 As IG_OPER_GRAV,                                     
  ---I.2---                                 
  0.00 As IG_OPSE_GRAV,                                
  ---I.3---                                 
  0.00 As IG_OPSI_CRFI,                                
  CASE                   
  WHEN TMDOCU_PROV.CO_ESTA_DOCU != 'ANU' THEN                                 
  Round(OFITESO.dbo.FN_TCFACT_CAMB_Q02(TMDOCU_PROV.CO_MONE, @VSCO_MONE_NACI, TMDOCU_PROV.FE_EMIS,                                
  (( TMDOCU_PROV.IM_IMP1 * PATINDEX( SUBSTRING( IsNull( TMDOCU_PROV.CO_IMP1, '0'), 1, 2), 'IR' ) ) +                                
  (  TMDOCU_PROV.IM_IMP2 * PATINDEX( SUBSTRING( IsNull( TMDOCU_PROV.CO_IMP2, '0'), 1, 2), 'IR' ) ) +                        
  (  TMDOCU_PROV.IM_IMP3 * PATINDEX( SUBSTRING( IsNull( TMDOCU_PROV.CO_IMP3, '0'), 1, 2), 'IR' ) ) ),                                 
  @VSTI_CAMB, @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, TMDOCU_PROV.FA_TIPO_CAMB), 2)                    
  ELSE 0.00                  
  END As IR_CUAR_CATE,                               
  CASE                   
  WHEN TMDOCU_PROV.CO_ESTA_DOCU != 'ANU' THEN                                   
  Round(OFITESO.dbo.FN_TCFACT_CAMB_Q02(TMDOCU_PROV.CO_MONE, @VSCO_MONE_NACI, TMDOCU_PROV.FE_EMIS,                                
  (( TMDOCU_PROV.IM_IMP1 * PATINDEX( SUBSTRING( IsNull( TMDOCU_PROV.CO_IMP1, '0'), 1, 3), 'IES' ) ) +                                
  (  TMDOCU_PROV.IM_IMP2 * PATINDEX( SUBSTRING( IsNull( TMDOCU_PROV.CO_IMP2, '0'), 1, 3), 'IES' ) ) +                                
  (  TMDOCU_PROV.IM_IMP3 * PATINDEX( SUBSTRING( IsNull( TMDOCU_PROV.CO_IMP3, '0'), 1, 3), 'IES' ) ) ),                                 
  @VSTI_CAMB, @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, TMDOCU_PROV.FA_TIPO_CAMB), 2)                              
ELSE 0.00                  
END As IM_IESS,                      
CASE                   
WHEN TMDOCU_PROV.CO_ESTA_DOCU != 'ANU' THEN                                 
  Round(OFITESO.dbo.FN_TCFACT_CAMB_Q02(TMDOCU_PROV.CO_MONE, @VSCO_MONE_NACI, TMDOCU_PROV.FE_EMIS,                                
  TMDOCU_PROV.IM_TOTA,                                 
  @VSTI_CAMB, @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, TMDOCU_PROV.FA_TIPO_CAMB), 2)                           
ELSE 0.00                  
END As IM_TOTA,       
  TMDOCU_PROV.FA_TIPO_CAMB, TMDOCU_PROV.FA_CAMB_EXTR,                                 
  TMDOCU_PROV.CO_IMP1, TMDOCU_PROV.PC_IMP1,                                
  TMDOCU_PROV.CO_IMP2, TMDOCU_PROV.PC_IMP2,                                
  TMDOCU_PROV.CO_IMP3, TMDOCU_PROV.PC_IMP3,                                
                                 
  T3.ST_SIGN As SIGNO,                                
       
  TMDOCU_PROV.CO_ESTA_DOCU As ESTADO,                                
  T5.CO_SUNA, TMDOCU_PROV.NU_DOCU_ORIG, TMDOCU_PROV.FE_DOCU_ORIG,                                 
  TMDOCU_PROV.NU_DEPO_DETR As COMPROBANTE, TMDOCU_PROV.FE_DEPO_DETR As FE_DEPO_DETRACCION,                                 
  TMDOCU_PROV.NU_COMP_SERV,                      
                              
  DBO.FU_RETE_FLAG( TMDOCU_PROV.CO_EMPR, T2.ST_RETE, T2.ST_BCON, T3.ST_RETE,  TMDOCU_PROV.FE_EMIS,  @VNIM_MAXI_NRET,                    
  TMDOCU_PROV.IM_IMP1, T3.ST_DOCU_0004,                           
  dbo.FN_TCFACT_CAMB_Q02(TMDOCU_PROV.CO_MONE, @VSCO_MONE_NACI,TMDOCU_PROV.FE_EMIS, TMDOCU_PROV.IM_TOTA, @VSTI_CAMB,                    
  @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR,                                
  TMDOCU_PROV.FA_TIPO_CAMB))  'RETENCION' ,                             
  (CASE                                
  When  TMDOCU_PROV.CO_TIPO_DOCU IN (Select TI_DOCU_PROV From #TWTIPO_DORC) THEN                                
  DBO.FU_FECH_PAGO( @ISCO_EMPR, TMDOCU_PROV.CO_PROV,  TMDOCU_PROV.CO_TIPO_DOCU, TMDOCU_PROV.NU_DOCU_PROV, TMDOCU_PROV.FE_VENC)                                
  Else                                
  NULL                                
   END) 'FE_VENC' , T3.NO_DOCU, T2.CO_DOCU_SUNA, T2.NU_DOCU_SUNA, 0.00, 0.00, 0.00, null,  
 TMDOCU_PROV.CO_DEPE_ADUA, TMDOCU_PROV.NU_ANNO_ADUA          
 From  TMDOCU_PROV                              
 Left Outer join TTDOCU_CNTB T5                              
 On TMDOCU_PROV.TI_DOCU_ORIG = T5.TI_DOCU, TMAUXI_EMPR T2, TTDOCU_CNTB T3                         
 Where  TMDOCU_PROV.CO_EMPR  = @ISCO_EMPR                                
     And T2.CO_EMPR = TMDOCU_PROV.CO_EMPR                                
     And T2.TI_AUXI_EMPR = @VSCO_TIAU_PROV                                
     And T2.CO_AUXI_EMPR = TMDOCU_PROV.CO_PROV                                
     And T3.TI_DOCU = TMDOCU_PROV.CO_TIPO_DOCU                                
     And T3.ST_DOCU_0010 = 'S'                                
     And T3.ST_REGI_COMP = 'S'                                
     And Exists ( Select #TWREGI_COM1_RC02.NU_CORR_COMP                                
    From #TWREGI_COM1_RC02                                
    Where                                 
    #TWREGI_COM1_RC02.CO_PROV = TMDOCU_PROV.CO_PROV And                                
    #TWREGI_COM1_RC02.CO_TIPO_DOCU = TMDOCU_PROV.CO_TIPO_DOCU And                                
    #TWREGI_COM1_RC02.NU_DOCU_PROV = TMDOCU_PROV.NU_DOCU_PROV)                                
                                
 /*********** Trabajo en la Tabla Temporal calculo Col Ajustes y Tipo de Cambio **************/                                
 Update #TWREGI_COM1                                
 Set FA_CAMB = Case CO_MONE                                
       When @VSCO_MONE_NACI Then 1.00                                
       When @VSCO_MONE_EXTR Then FA_TIPO_CAMB                                
       Else FA_CAMB_EXTR                              
       End,                                
      IM_AJUS = Case DE_TIPO_REPO                                
       When 'REG_COMPRAS' Then Case PC_IMP1 When 0.00 Then 0.00 Else ((IsNull(IG_OPER_GRAV,0) + IsNull(IG_OPSE_GRAV,0)) /                    
       PC_IMP1)*100.00 - IsNull(IB_BRUT_AFEC,0) End                                
       When 'REG_RECxHON' Then Case When PC_IMP1 = 0.00 Or IM_IESS = 0.00 Then 0.00 Else ((IsNull(IM_IESS,0)) /                    
       PC_IMP1)*100.00 - IsNull(IB_SELE_CONS,0) End                                
     Else 0.00                                
       End,                           
      CO_OPRC_CNTB= dbo.FN_COOPRC_CNTB_Q01(@ISCO_EMPR, CO_TIPO_OPER),                                
      DE_OPRC  = dbo.FN_COOPRC_CNTB_Q02(@ISCO_EMPR, CO_TIPO_OPER)              
                                
 /*********** Incluir Registros Eliminados  **************/                                
 Select @VNNU_REGI_ELIM = Count(NU_CORR_COMP)         
 From #TWREGI_COM1_RC01                                
                                
 If IsNull(@VNNU_REGI_ELIM, 0 ) > 0 -- Existen Regitros Eliminado y seleciono la Opcion Incluir Reg Eliminados                                
  Insert Into #TWREGI_COM1                                
  (DE_TIPO_REPO, CO_SUNA, FE_EMIS, NU_CORR_COMP, NU_ASTO, NU_DOCU_PROV, NU_RUCS, NO_AUXI,                                
  CO_TIPO_DOCU, CO_MONE,                                
  IB_BRUT_AFEC , IB_OPER_GRAV , IB_OPER_SCRF, IB_OPER_INAF ,                                
  IB_SELE_CONS ,                                
  IG_OPER_GRAV, IG_OPSE_GRAV , IG_OPSI_CRFI ,                                 
  IR_CUAR_CATE , IM_IESS ,                                
  IM_TOTA,                                 
  FA_TIPO_CAMB, FA_CAMB_EXTR,                                 
  CO_IMP1, PC_IMP1,                                
 CO_IMP2, PC_IMP2,                                
  CO_IMP3, PC_IMP3,                                
  ST_SIGN, CO_ESTA_DOCU, CO_SUNA_ORIG, NU_DOCU_ORIG,                                
  FE_DOCU_ORIG, NU_DEPO_DETR, FE_DEPO_DETR, NU_COMP_SERV, FL_RETE, FE_ULTI_PAGO, CO_DOCU_SUNA, NU_DOCU_SUNA)                                
  Select 'REG_COMPRAS', '', Null, SUBSTRING(NU_CORR_COMP, 1, 10), '', '', '', '**ANULADO**',                                
    '', '',                                
    0.00 , 0.00 , 0.00, 0.00 ,                                
    0.00 ,                                
    0.00 , 0.00 , 0.00 ,                                 
    0.00 , 0.00 ,                                
                       
 0.00 ,                                 
    1.00, 1.00,                                 
    '', 0.00,                                
    '', 0.00,                                
    '', 0.00,                                
   'S', 'ANU', '', '',                    
    Null, '', Null, '', Null, '', '', ''                               
  From #TWREGI_COM1_RC01                                
  Where NOT EXISTS(  Select #TWREGI_COM1.NU_CORR_COMP                                
                             From #TWREGI_COM1                                
        Where #TWREGI_COM1.NU_CORR_COMP = #TWREGI_COM1_RC01.NU_CORR_COMP)                                
                                
                                
End  ---Fin Reporte Oficial                                 
Else                                
Begin ---Inicio Reporte en Base a la Moneda Origen                                
 Insert Into #TWREGI_COM1                                
 (DE_TIPO_REPO, CO_SUNA, FE_EMIS, NU_CORR_COMP, CO_TIPO_OPER, NU_ASTO, NU_DOCU_PROV, NU_RUCS, NO_AUXI,                                
 CO_TIPO_DOCU, CO_MONE,                                
 IB_BRUT_AFEC , IB_OPER_GRAV , IB_OPER_SCRF, IB_OPER_INAF , IB_SELE_CONS ,                                
 IG_OPER_GRAV, IG_OPSE_GRAV , IG_OPSI_CRFI ,                                 
 IR_CUAR_CATE , IM_IESS ,                             
 IM_TOTA,                                 
 FA_TIPO_CAMB, FA_CAMB_EXTR,                                 
 CO_IMP1, PC_IMP1,                                
 CO_IMP2, PC_IMP2,                                
 CO_IMP3, PC_IMP3,                                
ST_SIGN, CO_ESTA_DOCU, CO_SUNA_ORIG, NU_DOCU_ORIG,                                
 FE_DOCU_ORIG, NU_DEPO_DETR, FE_DEPO_DETR, NU_COMP_SERV, FL_RETE, FE_ULTI_PAGO, NO_DOCU, CO_DOCU_SUNA,                 
 NU_DOCU_SUNA,CO_DEPE_ADUA, NU_ANNO_ADUA )                                
 Select                  
  'REG_COMPxMON' As TIPO, T3.CO_SUNA As CODIGO_SUNAT, TMDOCU_PROV.FE_EMIS As FECHA_EMISION,                                
  TMDOCU_PROV.NU_CORR_COMP As CORRELATIVO, TMDOCU_PROV.CO_TIPO_OPER As CO_TIPO_OPER, TMDOCU_PROV.NU_ASTO As NRO_ASIENTO,                     
  TMDOCU_PROV.NU_DOCU_PROV As NUMERO_DOCUMENTO,                                
  T2.NU_RUCS As RUC_PROVEEDOR, T2.NO_AUXI As NOMB_PROV,                                
  TMDOCU_PROV.CO_TIPO_DOCU, TMDOCU_PROV.CO_MONE As MONE,                                
  ---B1.---                    
CASE                   
WHEN TMDOCU_PROV.CO_ESTA_DOCU != 'ANU' THEN                                
  Case T3.ST_SIGN                                 
   When 'S'  Then  TMDOCU_PROV.IM_BRUT_AFEC                                
   Else TMDOCU_PROV.IM_BRUT_AFEC * -1                                 
  End                   
ELSE 0.00                  
END As IB_BRUT_AFEC,                                
  ---B2.---                                
  0.00 As IB_OPER_GRAV,                                
  ---B3.---                          
  0.00 As IB_OPER_SCRF,                                
  ---B4.---                   
CASE                   
WHEN TMDOCU_PROV.CO_ESTA_DOCU != 'ANU' THEN                               
  Case T3.ST_SIGN                                 
   When 'S'  Then  TMDOCU_PROV.IM_BRUT_INAF                                
   Else TMDOCU_PROV.IM_BRUT_INAF * -1                                 
  End                   
ELSE 0.00                  
END As IB_OPER_INAF,                                
  ---B5.---                                
  0.00 As IB_SELE_CONS,                                 
  ---I.1---                   
CASE                   
WHEN TMDOCU_PROV.CO_ESTA_DOCU != 'ANU' THEN                               
Case                                 
   When T3.CO_SUNA = '91' OR T3.CO_SUNA = '99' Then                                 
    Case TMDOCU_PROV.CO_MONE                                
     When @VSCO_MONE_EXTR Then Round( ( ( TMDOCU_PROV.IM_BRUT_INAF )* TMDOCU_PROV.FA_TIPO_CAMB ), 2 )                                
     Else TMDOCU_PROV.IM_BRUT_INAF                                     
    End                                
   Else                                
    Case T3.ST_SIGN                                 
     When 'S' Then IsNull(TMDOCU_PROV.IM_IMP1,0) + IsNull(TMDOCU_PROV.IM_SCF1,0)                                
     Else (IsNull(TMDOCU_PROV.IM_IMP1,0) + IsNull(TMDOCU_PROV.IM_SCF1,0) )*-1                                
    End                                
  End                    
ELSE 0.00                  
END As IG_OPER_GRAV,                               
  ---I.2---                  
CASE                   
WHEN TMDOCU_PROV.CO_ESTA_DOCU != 'ANU' THEN                                  
  Case T3.ST_SIGN                                 
   When 'S' Then IsNull(TMDOCU_PROV.IM_IMP2,0) + IsNull(TMDOCU_PROV.IM_SCF2,0)                                
   Else (IsNull(TMDOCU_PROV.IM_IMP2,0) + IsNull(TMDOCU_PROV.IM_SCF2,0) )*-1                                
  End                   
ELSE 0.00                  
END As IG_OPSE_GRAV,                                 
  ---I.3---                                 
  0.00 As IG_OPSI_CRFI,                                
                                 
  0.00 As IR_CUAR_CATE,                               
                                 
  0.00 As IM_IESS,                                
CASE                   
WHEN TMDOCU_PROV.CO_ESTA_DOCU != 'ANU' THEN                                   
  Case T3.ST_SIGN                                 
   When 'S' Then IsNull(TMDOCU_PROV.IM_TOTA,0)                                
   Else IsNull(TMDOCU_PROV.IM_TOTA,0)*-1                                
  End                             
ELSE 0.00                  
END As IM_TOTA,                                     
  TMDOCU_PROV.FA_TIPO_CAMB, TMDOCU_PROV.FA_CAMB_EXTR,                                 
  TMDOCU_PROV.CO_IMP1, TMDOCU_PROV.PC_IMP1,                          
  TMDOCU_PROV.CO_IMP2, TMDOCU_PROV.PC_IMP2,                                
  TMDOCU_PROV.CO_IMP3, TMDOCU_PROV.PC_IMP3,                                
                                 
  T3.ST_SIGN As SIGNO,                                
                                 
  TMDOCU_PROV.CO_ESTA_DOCU As ESTADO,                    
                                
  T5.CO_SUNA, TMDOCU_PROV.NU_DOCU_ORIG, TMDOCU_PROV.FE_DOCU_ORIG,                      
  TMDOCU_PROV.NU_DEPO_DETR As COMPROBANTE, TMDOCU_PROV.FE_DEPO_DETR As FE_DEPO_DETRACCION,                                 
  TMDOCU_PROV.NU_COMP_SERV,                                
  DBO.FU_RETE_FLAG( TMDOCU_PROV.CO_EMPR, T2.ST_RETE, T2.ST_BCON, T3.ST_RETE, TMDOCU_PROV.FE_EMIS, @VNIM_MAXI_NRET,            
  TMDOCU_PROV.IM_IMP1, T3.ST_DOCU_0004,             
  dbo.FN_TCFACT_CAMB_Q02(TMDOCU_PROV.CO_MONE, @VSCO_MONE_NACI,TMDOCU_PROV.FE_EMIS, TMDOCU_PROV.IM_TOTA, @VSTI_CAMB,                    
  @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR,                                
  TMDOCU_PROV.FA_TIPO_CAMB))  'RETENCION',                              
  (CASE                                
  When  TMDOCU_PROV.CO_TIPO_DOCU IN (Select TI_DOCU_PROV From #TWTIPO_DORC) THEN                                
  DBO.FU_FECH_PAGO( @ISCO_EMPR, TMDOCU_PROV.CO_PROV,  TMDOCU_PROV.CO_TIPO_DOCU, TMDOCU_PROV.NU_DOCU_PROV, TMDOCU_PROV.FE_VENC)                                
  Else                                
  null                
  END) 'FE_VENC' , T3.NO_DOCU, T2.CO_DOCU_SUNA, T2.NU_DOCU_SUNA,  
 TMDOCU_PROV.CO_DEPE_ADUA, TMDOCU_PROV.NU_ANNO_ADUA                   
 From  TMDOCU_PROV                              
 Left Outer Join TTDOCU_CNTB T5                       
 On  TMDOCU_PROV.TI_DOCU_ORIG = T5.TI_DOCU, TMAUXI_EMPR T2, TTDOCU_CNTB T3                                      
 Where  TMDOCU_PROV.CO_EMPR  = @ISCO_EMPR                                
     And T2.CO_EMPR = TMDOCU_PROV.CO_EMPR                                
     And T2.TI_AUXI_EMPR = @VSCO_TIAU_PROV                                
     And T2.CO_AUXI_EMPR = TMDOCU_PROV.CO_PROV                                
     And T3.TI_DOCU = TMDOCU_PROV.CO_TIPO_DOCU                                
     And T3.ST_DOCU_0010 = 'S'                              
     And T3.ST_REGI_COMP = 'S'                                
     And Exists ( Select #TWREGI_COM1_RC02.NU_CORR_COMP                                
      From #TWREGI_COM1_RC02                                
      Where                                 
      #TWREGI_COM1_RC02.CO_PROV = TMDOCU_PROV.CO_PROV And      
      #TWREGI_COM1_RC02.CO_TIPO_DOCU = TMDOCU_PROV.CO_TIPO_DOCU And                               
      #TWREGI_COM1_RC02.NU_DOCU_PROV = TMDOCU_PROV.NU_DOCU_PROV                                
     )                                
                                
 Update #TWREGI_COM1                                
 Set  FA_CAMB = Case CO_MONE                                
      When @VSCO_MONE_NACI Then FA_TIPO_CAMB                                
      When @VSCO_MONE_EXTR Then FA_TIPO_CAMB                                
      Else FA_CAMB_EXTR                                
      End, IM_AJUS = Case DE_TIPO_REPO                                
      When 'REG_COMPRAS' Then Case PC_IMP1 When 0.00 Then 0.00 Else ((IsNull(IG_OPER_GRAV,0) + IsNull(IG_OPSE_GRAV,0)) / PC_IMP1)*100.00 - IsNull(IB_BRUT_AFEC,0) End           
      When 'REG_RECxHON' Then Case When PC_IMP1 = 0.00 Or IM_IESS = 0.00 Then 0.00 Else ((IsNull(IM_IESS,0)) / PC_IMP1)*100.00 - IsNull(IB_SELE_CONS,0) End           
      Else 0.00                                
       End            
                                
                                
End  ---Fin Reporte Base a la Moneda Origen                                
                                
                                
                                
RETURN                                
/*---------------- Fin ----------------------------*/  

GO
